package redigo

import (
	"egin/pkg/config"
	"time"

	"github.com/gomodule/redigo/redis"
)

var redisPool *redis.Pool

func init() {

	redisPool = &redis.Pool{
		MaxIdle:     config.C().Redis.MaxIdle,                   //最大空闲连接数
		MaxActive:   config.C().Redis.MaxActive,                 //允许分配最大连接数
		IdleTimeout: config.C().Redis.IdleTimeout * time.Second, //连接时间限制
		Wait:        true,
		Dial: func() (redis.Conn, error) { //创建连接的函数
			c, err := redis.Dial("tcp", config.C().Redis.Host)
			if err != nil {
				return nil, err
			}
			if password := config.C().Redis.Password; password != "" {
				if _, err := c.Do("AUTH", password); err != nil {
					c.Close()
					return nil, err
				}
			}

			if _, err := c.Do("SELECT", config.C().Redis.Db); err != nil {
				c.Close()
				return nil, err
			}
			return c, nil
		},
	}
}

func GetPool() *redis.Pool {
	// redisPoolOnce.Do(func() {
	// 	redisPool = initRedisPool()
	// })
	return redisPool
}
